File:of Disk: Disks/Working/Build-11-03-07
(Source file text)
F BLOCKS IN ONE GO = BATCH DCA CBLOCK /START WITH BLOCK 0 DCA CHKSM DUMPLP, CLA TAD RDSIZE TAD CBLOCK /(TOTAL - BATCH) - CURRENT CIA TAD NUMBLK /MORE BLOCKS LEFT THAN BATCH? SMA /NO, NUMBER OF BLOCKS LEFT CLA /YES, ONLY BATCH SIZE TAD RDSIZE SNA /ANY MORE BLOCKS? JMP DONE /NO, DO FINISH STUFF DCA ARGSZ /TO NUMBER OF BLOCKS REQUEST TAD CBLOCK /TO CURRENT BLOCK TO START WITH DCA ARGBK TAD DRVSEL JMS I (DTA0 0010 /READ STARTING IN FIELD 1 ARGSZ, 0 0 ARGBK, 0 JMP ERRRET /SOME DUST ON THE TAPE? TAD (377 /ALL BLOCKS GOOD DCA READST /Send data, each block starts with FF CLA CLL / then 2 12 bit words in 3 bytes DCA LOC / ERRRET DUPLICATES SOME OF THIS TAD ARGSZ CIA DCA BCNT /SET UP COUNTER OF NUMBER OF BLOCKS XFERRED CDF 10 /START IN FIELD 1 OUTBL1, JMS I (OUTBLK /SEND A BLOCK ISZ CBLOCK /NEXT BLOCK ISZ BCNT /BATCH XFERRED? JMP OUTBL1 /NO CDF 0 JMP DUMPLP /GO READ NEXT BATCH DONE, CLA / Send FE and -checksum of all words TAD (376 JMS I (PUN CLA CLL TAD CHKSM / Send checksum in two bytes, low bits first CIA JMS I (PUN CLA CLL TAD CHKSM CIA RTR RTR RTR RTR AND C17 JMS I (PUN CLA TAD DRVSEL JMS I (DTA0 / REWIND TAPE 0010 1 0 0 NOP TAD ERRCN2 / Leave AC with # of errors JMP FINISH ERRRET, CDF 10 /SEND GOOD BLOCKS READ WITH GOOD BLOCK FLAG CLA CLL /THEN BAD WITH BAD BLOCK FLAG. DCA LOC TAD CBLOCK CIA TAD BLOCK /Get - number good blocks read CIA /Last was bad SNA JMP FSTBAD /First block is bad, no good to send DCA BCNT TAD (377 DCA READST OUTBL2, JMS I (OUTBLK /Send good blocks ISZ CBLOCK ISZ BCNT JMP OUTBL2 FSTBAD, TAD (375 /NOW SEND BAD BLOCK DCA READST JMS I (OUTBLK ISZ CBLOCK ISZ ERRCN2 CDF 0 JMP DUMPLP /And read from here on PAGE OUTBLK, 0 /Send a block of data out serial port CLA TAD WCOUNT DCA LEN /COUNT FOR ONE BLOCK TAD READST /Send good/bad flag JMS PUN OUT, CLA CLL TAD I LOC TAD CHKSM / Keep checksum of all words sent DCA CHKSM TAD I LOC / Send 2 words as 3 bytes CLL RTR / WvdM: Left 8 Bits first RTR / WvdM: JMS PUN CLA CLL TAD I LOC AND C17 CLL RTL / WvdM: Low 4 Bits to high byte 2 RTL / WvdM DCA TEMP ISZ LOC TAD LOC TAD CX200 SZA CLA /ARE WE AT OS/8 BOUNDARY? JMP STFLD3+1 /NOT AT END OF FIELD (DJG) DCA LOC /OK, TO NEXT FIELD RDF / TAD (6211 /BUILD CDF DCA STFLD3 STFLD3, NOP ISZ LEN /END IF BUFFER? SKP /NO JMP ENDBK /YES TAD I LOC TAD CHKSM DCA CHKSM TAD I LOC CLL RTL RTL RAL / New: High 4 bits to low byte 2 AND C17 / (WvdM) was AND C360 TAD TEMP JMS PUN CLA CLL TAD I LOC JMS PUN ISZ LOC TAD LOC TAD CX200 SZA CLA /ARE WE AT OS/8 BOUNDARY? JMP STFLD4+1 /NOT AT END OF FIELD (DJG) DCA LOC /OK, TO NEXT FIELD RDF TAD (6211 /BUILD CDF DCA STFLD4 STFLD4, NOP ISZ LEN JMP OUT JMP I OUTBLK ENDBK, TAD TEMP /SEND LAST PART OF WORD JMS PUN JMP I OUTBLK PUN, 0 / Send byte out serial port PLS / Punch for testing with emulator / TLS2 / Send out console CLA CLL TAD CBLOCK PSF / TSF2 /Wait until character sent JMP .-1 CLA JMP I PUN $